from views import *
from google.appengine.api.users import User

def manage(request):
    """Admin usuaris"""
    user = users.GetCurrentUser()
    coperatives = db.GqlQuery('SELECT * FROM Coperativa')
    usuaris=[]
    for coperativa in coperatives:
        nom = coperativa.name
        usuariscope = db.GqlQuery('SELECT * FROM UsuariCoperativa WHERE coperativa=:1', coperativa.key())
        usuaris.append({'name':nom, 'usuaris':usuariscope})
    return respond(request, user, 'manageusuaris', {'usuaris': usuaris})

def usuaris_coperativa(request, cope_id):
    """Usuaris d'una coperativa"""
    user = users.GetCurrentUser()
    usuaris = db.GqlQuery('SELECT * FROM UsuariCoperativa WHERE coperative=:1', cope_id)
    return respond(request, user, 'usuaris', {'usuaris': usuaris})    
 
@managerrequired   
def edit_usuari(request, cope_id, usuari_id):
    """Editar un usuari en coperativa"""
    usuari = User(usuari_id)
    coperativa = db.GqlQuery("SELECT * FROM Coperativa " + 
                    "WHERE name = :1", cope_id)
                    
    # Hauriem de buscar si existeix un usuari a la cope amb el mateix id
    string_id = usuari.nickname()+cope_id
    usuari_coperativa = UsuariCoperativa(key_name=string_id)
    usuari_coperativa.usuari = usuari
    usuari_coperativa.coperativa = coperativa[0].key()
    usuari_coperativa.save()
    usuari_coperativa.put() 


@managerrequired    
def borrar_usuari(request, cope_id, usuari_id):
    string_id = usuari_id+cope_id
    usuari_coperativa = UsuariCoperativa.get_by_key_name(string_id)
    usuari_coperativa.delete()
        
    
def manage_del_usuari(request):   
    borrar_usuari(request, request.POST['cope_id'],request.POST['usuari_id'])
    return http.HttpResponseRedirect('/manage_users')

def manage_edit_usuari(request):
    edit_usuari(request, request.POST['cope_id'], request.POST['usuari_id'])
    return http.HttpResponseRedirect('/manage_users') 

    
def new_usuari(request, cope_id):
    """Create a new usuari"""
    return edit_usuari(request, cope_id, None)
    
 
